/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package treeship.core.service.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

/**
 *
 * @author moonchild
 */
public class MapList<K, V> {

    private HashMap<K, List<V>> map = new HashMap<K, List<V>>();

    public int size() {
        return map.size();
    }

    public boolean isEmpty() {
        return map.isEmpty();
    }

    public boolean containsKey(K arg0) {
        return map.containsKey(arg0);
    }

    public boolean containsValue(V arg0) {
        for (List<V> li : map.values()) {
            if (li.contains(arg0)) {
                return true;
            }
        }
        return false;
    }

    public List<V> get(K arg0) {
        return map.get(arg0);
    }

    public void put(K arg0, V arg1) {
        if (!map.containsKey(arg0)) {
            List<V> li = new ArrayList<V>();
            li.add(arg1);
            map.put(arg0, li);
        } else {
            List<V> get = map.get(arg0);
            get.add(arg1);
        }
    }

    public void removeKey(K arg0) {
        map.remove(arg0);

    }

    public void removeValue(V arg0) {
        for (List<V> li : map.values()) {
            if (li.contains(arg0)) {
                li.remove(arg0);
            }
        }
    }

    public void addKeys(Collection<K> coll) {
        for (K object : coll) {
            map.put(object, new ArrayList<V>());
        }
    }

    public void clear() {
        map.clear();
    }

    public void clearValues() {
        for (List<V> li : map.values()) {
            li.clear();
        }
    }

    public Set<K> keySet() {
        return map.keySet();
    }
}
